# Java 环境配置
# 这个文件包含所有 Java 相关的配置

# 定义各 JDK 版本路径
export JAVA_8_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home"
export JAVA_11_HOME="/Library/Java/JavaVirtualMachines/temurin-11.jdk/Contents/Home"
export JAVA_17_HOME="/Library/Java/JavaVirtualMachines/jdk-17.0.2.jdk/Contents/Home"

# 默认使用 Java 8
export JAVA_HOME=$JAVA_8_HOME

# 添加 Java 到 PATH
export PATH="$JAVA_HOME/bin:$PATH"

# Maven 配置 - 手动安装的Maven
export M2_HOME="$HOME/maven/apache-maven-3.9.6"
export PATH="$M2_HOME/bin:$PATH"
# Maven 内存配置
export MAVEN_OPTS="-Xms256m -Xmx512m"
export M2_HOME="$HOME/maven/apache-maven-3.9.6"
export PATH="$M2_HOME/bin:$PATH"
# Maven 内存配置
export MAVEN_OPTS="-Xms256m -Xmx512m"

# Gradle 配置 - 手动安装的Gradle
export GRADLE_HOME="$HOME/gradle/gradle-8.8"
export PATH="$GRADLE_HOME/bin:$PATH"
export GRADLE_USER_HOME="$HOME/.gradle"

# 切换 JDK 版本函数
function java_use() {
  version=$1
  case $version in
    8)
      export JAVA_HOME=$JAVA_8_HOME
      ;;
    11)
      export JAVA_HOME=$JAVA_11_HOME
      ;;
    17)
      export JAVA_HOME=$JAVA_17_HOME
      ;;
    *)
      log_error "用法: java_use <版本>"
      log_info "支持的版本: 8, 11, 17"
      return 1
      ;;
  esac
  export PATH="$JAVA_HOME/bin:$PATH"
  log_java "已切换至 Java $version: $(java -version 2>&1 | head -n 1)"
}

# Java 常用别名
alias mvnc="mvn clean"
alias mvni="mvn install"
alias mvnci="mvn clean install"
alias mvncp="mvn clean package"
alias mvndt="mvn dependency:tree"

# Spring Boot 开发别名
alias mvnrun="mvn spring-boot:run"
alias mvndev="mvn spring-boot:run -Dspring-boot.run.profiles=dev"
alias mvnprod="mvn spring-boot:run -Dspring-boot.run.profiles=prod"

# 检查 Java 环境函数
function check_java_env() {
  log_header "Java 环境信息"
  log_java "$(java -version 2>&1 | grep version)"
  log_path "JAVA_HOME" "$JAVA_HOME"
  
  if command -v mvn &>/dev/null; then
    log_maven "$(mvn -v | head -n 1)"
  else
    log_not_installed "Maven"
  fi
  
  if command -v gradle &>/dev/null; then
    log_gradle "$(gradle -v | grep Gradle)"
  else
    log_not_installed "Gradle"
  fi
  
  if command -v ant &>/dev/null; then
    log_version "Ant" "$(ant -version)"
  fi
}

# 别名
alias j-env="check_java_env"
alias j8="java_use 8"
alias j11="java_use 11"
alias j17="java_use 17"
alias java-paths="log_java_paths"

# 自动补全配置
if [ -f "$(brew --prefix)/etc/bash_completion.d/maven" ]; then
  source "$(brew --prefix)/etc/bash_completion.d/maven"
fi

# 初始检查当前 Java 版本
log_header "当前 Java 环境"
log_java "$(java -version 2>&1 | head -n 1)"

# ========== Java 版本切换函数 ==========
# 切换到JDK 8
function java8() {
  export JAVA_HOME=$JAVA_8_HOME
  export PATH="$JAVA_HOME/bin:$PATH"
  log_success "已切换到 JDK 8"
  java -version
}

# 切换到JDK 17
function java17() {
  export JAVA_HOME=$JAVA_17_HOME
  export PATH="$JAVA_HOME/bin:$PATH"
  log_success "已切换到 JDK 17"
  java -version
}

# ========== Java 常用别名 ==========
alias jv="java -version"
alias jc="javac -version"

# 显示当前Java环境
function java-status() {
  log_header "当前 Java 环境"
  java -version
}

# 当加载此文件时显示Java环境已加载
log_success "Java环境已加载" 